// fetch digits from a string, then order them.
#include <stdio.h>

void order_arr(int arr[], int n)
{
    int tmp,i,j,flag;
    // decending order
    for(i = 0; i < n - 1; i++)
    {
        int k = i;
        for(j = i + 1; j < n; j++)
        {    
            if(arr[k] < arr[j])
            {
                k = j;
            }
        }

        tmp = arr[k];
        arr[k] = arr[i];
        arr[i] = tmp;
    }    
    // OK!
    // for(i = 0; i < n - 1; i++)
    // {
    //     for(j = i + 1; j < n; j++)
    //     {
    //         if(arr[j] > arr[i])
    //         {
    //             tmp = arr[j];
    //             arr[j] = arr[i];
    //             arr[i] = tmp;
    //         }
    //     }
    // }
    
    // for(i = 0; i < n; i++)
    // {
    //     tmp = arr[i];
    //     for(j = 1; j < n - 1 - i; j++)
    //     {
    //         if(arr[i] < arr[j])
    //         {
    //             tmp = arr[i];
    //             arr[i] = arr[j];
    //             arr[j] = tmp;
    //         }
    //     }
    // }

    
}

long is_ok(long num)
{
    int ret = 10;
    if(num >= 10000 && num <=99999)
    {
        ret = 100000;
    } 
    else if(num >= 1000 && num <=9999)
    {
        ret = 10000;
    }
    else if(num >= 100 && num <=999)
    {
        ret = 1000;
    }
    else if(num >= 10 && num <=99)
    {
        ret = 100;
    }
    else
    {
        ret = 10;
    }

    return ret;
}

long compose_num(int arr[], int n)
{
    int i,j,temp,max_v,idx;
    long new_num = arr[0];
    int cnt = 0;
    //max_v = arr[0];
    for(i = 1; i < n; i++)
    {
        new_num = new_num * is_ok(arr[i]) + arr[i];
    }
    
    return new_num;
}

int main(void)
{   //a114d12bc432343c10f
    //a12bc432343cf
    char str1[] = "a12bc432343cf";
    
    int nums[30];
    int i,j;
    int cnt = 0;
    int item = 0;
    long ret;

    for(i = 0; str1[i] != '\0'; i++)
    {
        if(str1[i] >='0' && str1[i] <= '9')
        {
            if(item == 0)
            {
                item = str1[i] - '0';
                if(!(str1[i + 1] >='0' && str1[i + 1] <= '9'))
                {
                    nums[cnt] = item;
                    cnt++;
                }
                // nums[cnt] = item;
                // cnt++;
                // continue;
            }
            else 
            {
                item = 10 * item + (str1[i] - '0');
                //nums[cnt] = item;
                //cnt++;
                if(!(str1[i + 1] >='0' && str1[i + 1] <= '9'))
                {
                    nums[cnt] = item;
                    cnt++;
                }
            }
        }
        else
        {
            item = 0;
        }
    }

    for(j = 0; j < cnt; j++)
    {
        printf("%d ", nums[j]);
    }
    printf("\n--after orfer--\n");
    order_arr(nums, cnt);

    for(j = 0; j < cnt; j++)
    {
        printf("%d ", nums[j]);
    }

    printf("\n");
    ret = compose_num(nums, cnt);
    printf("result is : %ld\n", ret);
    printf("\nhello\n");
    return 0;
}